var _ = require("lodash");
// _.assign(object, [sources])
// 分配来源对象的可枚举属性到目标对象上,会改变object
// 它的返回值也是obiect

function Foo() {
  this.a = 1;
}

function Bar() {
  this.c = 3;
}

Foo.prototype.b = 2;
Bar.prototype.d = 4;
let obj = { a: 0 };

let a = _.assign(obj, new Foo(), new Bar());
// 这里只是不能遍历来源对象的属性，比如prototype上的属性
// 如果连这个也想要继承，就可以使用第二个方式
console.log("obj", obj);
console.log("a", a);
// 其实就是a和obj是同一个地址引用
console.log(a === obj);

const object = {
  a: 1,
  b: 2,
};

const source = {
  b: 3,
  c: 4,
};

_.assign(object, source);
console.log(object);
